package org.abacus.dbtojava;

import java.util.HashMap;
import java.util.Map;

/**
 *
 * @author chaoyang.li
 * @date 2012-10-22
 *
 */
public abstract class TypeMapping {
	private static Map<Integer, String> JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES = new HashMap<Integer, String>();
	static {
		JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.CHAR), java.lang.String.class.getName());
		JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.VARCHAR), java.lang.String.class.getName());
		JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.LONGVARCHAR), java.lang.String.class.getName());
		JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.NUMERIC), java.math.BigDecimal.class.getName());
		JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.DECIMAL), java.math.BigDecimal.class.getName());
		JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.BIT), java.lang.Boolean.class.getName());
		JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.TINYINT), java.lang.Byte.class.getName());
		JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.SMALLINT), java.lang.Short.class.getName());
		JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.INTEGER), java.lang.Integer.class.getName());
		JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.BIGINT), java.lang.Long.class.getName());
		JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.REAL), java.lang.Float.class.getName());
		JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.FLOAT), java.lang.Double.class.getName());
		JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.DOUBLE), java.lang.Double.class.getName());

		JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.BINARY), java.lang.String.class.getName());
		JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.VARBINARY), java.lang.String.class.getName());
		JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.LONGVARBINARY), java.lang.String.class.getName());

		// JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.BINARY),
		// java.lang.Byte[].class.getName());
		// JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.VARBINARY),
		// java.lang.Byte[].class.getName());
		// JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.LONGVARBINARY),
		// java.lang.Byte[].class.getName());

		JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.DATE), java.util.Calendar.class.getName());
		JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.TIME), java.util.Calendar.class.getName());
		JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.TIMESTAMP), java.util.Calendar.class.getName());

		// JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.DATE),
		// java.sql.Date.class.getName());
		// JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.TIME),
		// java.sql.Time.class.getName());
		// JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.put(Integer.valueOf(java.sql.Types.TIMESTAMP),
		// java.sql.Timestamp.class.getName());
	}

	public static String getJavaTypes(int sqlTypes) {
		return JAVA_SQL_TYPES_TM_JAVA_LANG_TYPES.get(Integer.valueOf(sqlTypes));
	}
}
